<?php
/**
 * util string
 * @package common_lib_util
 */
load_lib('/sys/util/string');
/**
 * util string
 * @author pandajingjing
 * @package common_lib_util
 */
class util_string extends sys_util_string{

	/**
	 * 检查字符串长度
	 * @param string $p_strData
	 * @param int $p_intMinLength
	 * @param int $p_intMaxLength
	 * @param boolean $p_bolMultiByte 是否区分中英文字符串
	 * @return true/false
	 */
	static function chkStrLength($p_strData,$p_intMinLength=0,$p_intMaxLength=0,$p_bolMultiByte=true){
		if($p_bolMultiByte){
			$intLen=strlen($p_strData);
		}else{
			$intLen=mb_strlen($p_strData,get_config('charset'));
		}
		if($p_intMinLength>0){
			if($p_intMinLength>$intLen){
				return false;
			}
		}
		if($p_intMaxLength>0){
			if($p_intMaxLength<$intLen){
				return false;
			}
		}
		return true;
	}

	/**
	 * 判断数据类型是否正确
	 * @param mix $p_mixData
	 * @param string $p_strDataType
	 * @return true/false
	 */
	static function chkDataType($p_mixData,$p_strDataType){
		if(''==$p_mixData){
			return false;
		}
		switch($p_strDataType){
			case 'int':
				return 0<preg_match('/^-?[1-9]?[0-9]*$/',$p_mixData)?true:false;
			case 'url':
				return 0<preg_match('/^https?:\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/',$p_mixData)?true:false;
			case 'email':
				return 0<preg_match('/^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/i',$p_mixData)?true:false;
			case 'idcard':
				return 0<preg_match('/^[0-9]{15}$|^[0-9]{17}[a-zA-Z0-9]/',$p_mixData)?true:false;
			case 'area':
				return 0<preg_match('/^\d+(\.\d{1,2})?$/',$p_mixData)?true:false;
			case 'money':
				return 0<preg_match('/^\d+(\.\d{1,2})?$/',$p_mixData)?true:false;
			case 'mobile':
				return 0<preg_match('/^1\d{10,10}$/',$p_mixData)?true:false;
			case 'phone':
				return 0<preg_match('/^(\d{3,4}-?)?\d{7,8}$/',$p_mixData)?true:false;
			default:
				return false;
		}
	}

	/**
     * 获取随机字符串
     * @param int $p_intLength
     * @param int $p_intStyle 0-number, 1-alpha, 2-all
     */
	static function getRand($p_intLength,$p_intStyle=0){
		$strTmp='0123456789abcdefghijklmnopqrstuvwxyz';
		$strReturn='';
		switch($p_intStyle){
			case 0:
				$intStart=0;
				$intEnd=9;
				break;
			case 1:
				$intStart=10;
				$intEnd=35;
				break;
			case 2:
				$intStart=0;
				$intEnd=35;
				break;
			default:
				$intStart=0;
				$intEnd=9;
		}
		for($i=0;$i<$p_intLength;$i++){
			$strReturn.=substr($strTmp,rand($intStart,$intEnd),1);
		}
		return $strReturn;
	}
}